package com.xiaoq.shop.vo;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Coupon4BVo {

    @ApiModelProperty(value = "主鍵")
    private String id;

    //@ApiModelProperty(value = "优惠券模板编码")
    //private Long couponTemplateCode;  //一种面额,一个模板编码

    @ApiModelProperty(value = "优惠券标题")
    private String title;

    @ApiModelProperty(value = "优惠券面额")
    private Integer denomination ;

    @ApiModelProperty(value = "优惠券使用最低消费金额")
    private Integer minSpendingAmountForUse;

    @ApiModelProperty(value = "无使用条件(无1 有0)")
    private Integer unconditional; // 无1 有0

    @ApiModelProperty(value = "优惠券生效日期")
    private Long effectiveDate;

    @ApiModelProperty(value = "优惠券失效日期")
    private Long expirationDate;

    @ApiModelProperty(value = "优惠券数量")
    private Integer count;

    @ApiModelProperty(value = "优惠券限制领取个数")
    private Integer limitCount;

    @ApiModelProperty(value = "描述")
    private String description;

    /**
     * 判断优惠券是否有效根据 effectiveDate 和 expirationDate
     * state是一个状态，判断是否在APP 段显示
     */
    @ApiModelProperty(value = "状态(0：C端不显示，1:显示)")
    private Integer state;  //状态,0,不显示,1,显示

    @ApiModelProperty(value = "状态(1删除 0 正常；)")
    private Integer delete = 0; //1删除 0 正常；

    @ApiModelProperty(value = "是否提醒(1提醒 0不提醒)")
    private Integer notify = 0; //1提醒 0不提醒；

    @ApiModelProperty(value = "已被领取的数量")
    public Integer takenCount;  //已被领取的数量

    @ApiModelProperty(value = "已使用的优惠券数量")
    public int hasUse;

    @ApiModelProperty(value = "领取优惠券的人数")
    public int peopleTakenCount;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Integer getDenomination() {
		return denomination;
	}

	public void setDenomination(Integer denomination) {
		this.denomination = denomination;
	}

	public Integer getMinSpendingAmountForUse() {
		return minSpendingAmountForUse;
	}

	public void setMinSpendingAmountForUse(Integer minSpendingAmountForUse) {
		this.minSpendingAmountForUse = minSpendingAmountForUse;
	}

	public Integer getUnconditional() {
		return unconditional;
	}

	public void setUnconditional(Integer unconditional) {
		this.unconditional = unconditional;
	}

	public Long getEffectiveDate() {
		return effectiveDate;
	}

	public void setEffectiveDate(Long effectiveDate) {
		this.effectiveDate = effectiveDate;
	}

	public Long getExpirationDate() {
		return expirationDate;
	}

	public void setExpirationDate(Long expirationDate) {
		this.expirationDate = expirationDate;
	}

	public Integer getCount() {
		return count;
	}

	public void setCount(Integer count) {
		this.count = count;
	}

	public Integer getLimitCount() {
		return limitCount;
	}

	public void setLimitCount(Integer limitCount) {
		this.limitCount = limitCount;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Integer getState() {
		return state;
	}

	public void setState(Integer state) {
		this.state = state;
	}

	public Integer getDelete() {
		return delete;
	}

	public void setDelete(Integer delete) {
		this.delete = delete;
	}

	public Integer getNotify() {
		return notify;
	}

	public void setNotify(Integer notify) {
		this.notify = notify;
	}

	public Integer getTakenCount() {
		return takenCount;
	}

	public void setTakenCount(Integer takenCount) {
		this.takenCount = takenCount;
	}

	public int getHasUse() {
		return hasUse;
	}

	public void setHasUse(int hasUse) {
		this.hasUse = hasUse;
	}

	public int getPeopleTakenCount() {
		return peopleTakenCount;
	}

	public void setPeopleTakenCount(int peopleTakenCount) {
		this.peopleTakenCount = peopleTakenCount;
	}
}
